package com.poem.springboot_rear.controller;

import cn.hutool.core.util.StrUtil;
import com.poem.springboot_rear.common.AuthAccess;
import com.poem.springboot_rear.common.LogAs;
import com.poem.springboot_rear.common.LogType;
import com.poem.springboot_rear.common.Result;
import com.poem.springboot_rear.entity.User;
import com.poem.springboot_rear.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 功能： 登录、注册
 * 作者：小祝小祝
 * 日期： 2023/11/13 20:08
 */
@RestController
public class LoginController {

    @Resource
    UserService userService;

    @GetMapping("/")
    public Result hello() {
        // 返回一个success 表示我们后台是通的
        return Result.success("success");
    }

    /**
     *  用户登录
     * @param user
     * @return
     */
    @LogAs(operation = "登录",type = LogType.LOGIN)
    @PostMapping("/login")
    public Result login(@RequestBody User user){
        // 校验数据是否为空  StrUtil.isBlank()
        if (StrUtil.isBlank(user.getUsername()) || StrUtil.isBlank(user.getPassword())){
            return Result.error("数据输入不合法");
        }
        // 把查到的dbUser赋值给前端传过来的user，然后返回给前端
        user = userService.login(user);
        return Result.success(user);
    }

    /**
     *  用户注册
     * @param user
     * @return
     */
    @LogAs(operation = "注册",type = LogType.REGISTER)
    @AuthAccess
    @PostMapping("/register")
    public Result register(@RequestBody User user){
        // 校验数据是否为空  StrUtil.isBlank()
        if (StrUtil.isBlank(user.getUsername()) || StrUtil.isBlank(user.getPassword())){
            return Result.error("数据输入不合法");
        }
        // 把查到的dbUser赋值给前端传过来的user，然后返回给前端
        user = userService.register(user);
        return Result.success(user);
    }

    /**
     * 重置密码
     */
    @AuthAccess
    @PostMapping("/password")
    public Result password(@RequestBody User user){
        // 校验数据是否为空  StrUtil.isBlank()
        if (StrUtil.isBlank(user.getUsername()) || StrUtil.isBlank(user.getPhone())){
            return Result.error("数据输入不合法");
        }
        // 把查到的dbUser赋值给前端传过来的user，然后返回给前端
        userService.resetPassword(user);
        return Result.success();
    }
}
